package com.second.system.pojo.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class UploadUtil {
    private static List<String> arrUrl = new ArrayList();

    public static List<String> getUrl(MultipartFile files) {
        arrUrl.clear();
        String url="";
            // 根据接收到的file参数获取当前上传文件的文件名(xxx.yyy 包括文件的扩展名)
            String filename = files.getOriginalFilename();
            // 因为可能存在同名文件，所以我们需要将获取到的文件名变成唯一
            // 根据文件后缀的.进行切割，保留文件扩展名
            int index = filename.indexOf(".");
            String txt = filename.substring(index);
            // 将文件名变成唯一，使用UUID工具类产生一个唯一的文件名UUID.randomUUID().toString()，再拼接上之前的扩展名
            filename = UUID.randomUUID().toString()+txt;
            // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
            String endpoint = "oss-cn-beijing.aliyuncs.com";
            // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
            String accessKeyId = "LTAI4GJwwG26FL1sL4eRApAU";
            String accessKeySecret = "jRyQ9PgGSN7WMhDzs3f5v25d4uiilc";
            String bucketName = "mitu-bucket";
            // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径，例如abc/efg/123.jpg。
            String objectName = filename;
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传文件到指定的存储空间（bucketName）并将其保存为指定的文件名称（objectName）。
            try {
                /* file.getInputStream() 获取要上传的文件的字节流*/
                ossClient.putObject(bucketName, objectName,files.getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            // https://qy130-img.oss-cn-beijing.aliyuncs.com/d57319b2-3dc9-4a83-afcf-b9225bcc1905.jpg
            // 关闭OSSClient。
            ossClient.shutdown();
            // 将图片在阿里云服务器的地址返回给controller控制器
            url = "https://mitu-bucket.oss-cn-beijing.aliyuncs.com/"+filename;
            arrUrl.add(url);
        return arrUrl;
    }
}
